using Core.Db.Helper;
using Core.Db.Models;

namespace Core.Db.Services;

public interface ITouristRouteRepository
{
    Task<PaginationList<TouristRoute>> GetTouristRoutesAsync(string keyword, string operatorType, int? ratingValue,int pageSize,int pageNumber,string orderBy);
    Task<TouristRoute>  GetTouristRouteAsync(Guid TouristRouteId);
    Task<bool> TouristRouteExistAsync(Guid touristRouteId);
    Task<IEnumerable<TouristRoutePicture>> GetPicturesByTouristRouteIdAsync(Guid touristRouteId);
    Task<TouristRoutePicture> GetPictureAsync(int pictureId);
    Task<IEnumerable<TouristRoute>> GetTouristRouteByIDListAsync(IEnumerable<Guid> ids);
    Task AddTouristRouteAsync(TouristRoute touristRoute);
    Task AddTouristRoutePictureAsync(Guid touristRouteId, TouristRoutePicture touristRoutePicture);
    Task DeleteTouristRouteAsync(TouristRoute touristRoute);
    Task DeleteTouristRoutesAsync(IEnumerable<TouristRoute> touristRoutes);
    Task DeleteTouristRoutePictureAsync(TouristRoutePicture touristRoutePicture);
    Task<ShoppingCart> GetShoppingCartByUserId(string userId);
    Task CreateShoppingCart(ShoppingCart shoppingCart);
    Task AddShoppingCartItem(LineItem lineItem);
    Task<LineItem> GetShoppingCartItemByItemId(int lineItemId);
    Task DeleteShoppingCartItem(LineItem lineItem);
    Task<IEnumerable<LineItem>> GetShoppingCartsByIdListAsync(IEnumerable<int> ids);
    Task DeleteShoppingCartItems(IEnumerable<LineItem> lineItems);
    Task AddOrderAsync(Order order);
    Task<PaginationList<Order>> GetOrdersByUserId(string userId,int pageSize,int pageNumber);
    Task<Order> GetOrderById(Guid orderId);
    Task<bool> SaveAsync();
}